﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FA.Library.Util;
using System.ComponentModel;

namespace FA.Library.Sim.Aircraft
{
    public interface AircraftModel : ICloneable, INotifyPropertyChanged
    {
        /// <summary>
        /// The type of aircraft.
        /// </summary>
        string AircraftCategory { get; }

        /// <summary>
        /// Time, as referenced from 12:00 AM January 1, 0000 in seconds.
        /// </summary>
        uint AbsoluteTimeInSeconds { get; }

        /// <summary>
        /// Aircraft position information.
        /// </summary>
        AircraftPosition Position { get; }

        /// <summary>
        /// Aircraft velocity information.
        /// </summary>
        AircraftVelocity Velocity { get; }

        /// <summary>
        /// Aircraft engine information.
        /// </summary>
        AircraftEngine Engine { get; }

        /// <summary>
        /// Aircraft fuel information.
        /// </summary>
        AircraftFuel Fuel { get; }

        /// <summary>
        /// Aircraft instrument information.
        /// </summary>
        AircraftInstruments Instruments { get; }

        /// <summary>
        /// Aircraft control information.
        /// </summary>
        AircraftControls Controls { get; }
    }
}